#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<string>
#include<vector>
#include<assert.h>
using namespace std;
namespace my {
	class string
	{
	public:
		string(const char* str = "");
		string(const string& s);
		string& operator=(const string& s);
		~string();
	private:
		char* _str;
	};
	string::string(const char* str) {
		assert(str);
		int len = strlen(str);
		_str = new char[len + 1];
		strcpy(_str, str);
	}
	string::string(const string& s) {
		int len = strlen(s._str);
		_str = new char[len + 1];
		strcpy(_str, s._str);
	}
	string& string::operator=(const string& s) {
		if (this != &s) {
			string s1(s);
			swap(_str, s1._str);
		}
		return *this;
	}
	string::~string()
	{
		delete[] _str;
		_str = nullptr;
	}
}


int main()
{
	my::string s1("hello");
	my::string s2(s1);
	my::string s3("world");
	s2 = s3;

	return 0;
}